/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
var bag_id;
var bag_ref;
var bag_num = 0;
function initEvents(){
    jQuery("#date_demande_bag").datepicker({dateFormat:"yy-mm-dd"});
    jQuery("#date_expedition_bag").datepicker({dateFormat:"yy-mm-dd"});
    
    jQuery("#bag_send_valid").click(function(){
        var id=checkRadio("cash_b");
        if(id!==''){
            var type = jQuery("input[name=type_"+id+"]").val();
            if(type === 'bag'){
                markBagAsSend(id);
                showForm(id);
                jQuery("#dialog_form" ).dialog("open");
                //console.log(id);
               }else{
                   alert('Vous ne pouvez pas enregistrer un envoie pour un "LABEL"');
               }
            //jQuery("#num_bag").val(id);
        }
    }); 
    jQuery("#details_casbag").click(function(){
        var id=checkRadio("cash_b");
        if(id!==''){
           // window.open("index.php?option=com_cashbag&view=products&task=show_bag&tmpl=component&layout=details&bag_id="+id);
          window.location.href = "index.php?option=com_cashbag&view=products&task=show_bag&layout=details&bag_id="+id;
        }
    }); 
	jQuery("#edit_casbag").click(function(){
        var id=checkRadio("cash_b");
        if(id!==''){
            //window.open("index.php?option=com_cashbag&view=products&task=edit_bag&tmpl=component&layout=details&bag_id="+id);
          window.location.href = 'index.php?option=com_cashbag&view=products&task=edit_bag&layout=details&bag_id='+id;
        }
    }); 
    
    jQuery("#send_proposition").click(function(){
        var id=checkRadio("cash_b");
        if(id!==''){
             if(confirm('Voulez-vous envoyer la proposition au client?'))
              sendMail(id);
        }
       
    });
    jQuery("#bag_receiv_valid").click(function(){
        
        checkBagRef();
    });
    
    jQuery("#saisie_produit_next").click(function(){
        
        saveProdInBD();
    });
    
    jQuery("#terminer_saisie_bag").click(function(){
        //jQuery("saisie_produit_next").prop('disabled',true);
         //jQuery(this).prop('disabled',true);
        endBackReception();
		 
		
    });
    
    getPrices_ref();
    getMarques_ref();
    
    jQuery("#calculer_prix").click(function(){
         calculatePrice();
    });
    
    manageComments();
}

function sendMail(id){
    
    jQuery.ajax({
        type:'post',
        url:"index.php?option=com_cashbag&view=cashbag&format=json&task=send_mail&bag_id="+id,
        dataType: 'JSON',
        success:function(d){
            alert(d);
            console.log(d);
            window.location.href = 'index.php?option=com_cashbag&view=cashbag';
        }
    });
}

function markBagAsSend(id){
    
    jQuery.ajax({
        type:'post',
        url:"index.php?option=com_cashbag&view=cashbag&format=json&task=send_bag&bag_id="+id,
        dataType: 'JSON',
        success:function(d){
            console.log(d);
           //if(d)
            //window.location.href = 'index.php?option=com_cashbag&view=cashbag';
        }
    });
}
function formEnreg(id){
    var html;
    var nom     = jQuery("input[name=nom_"+id+"]").val();
    var prenom  = jQuery("input[name=prenom_"+id+"]").val();
    var azc     = jQuery("input[name=addr_"+id+"]").val();
    var azc_2   = azc.split('+');
    var ref     = jQuery("input[name=ref_"+id+"]").val();
    var link    = 'https://elabel.kiala.com/elabel/generatePDF?sender.name='+nom+'&sender.firstname='+prenom+'&sender.street='+azc_2[0]+'&sender.city='+azc[1]+'&sender.zip='+azc[2]+'&barcode='+ref+'&customerNumber=&parcelNumber=&dspid=33601028&nb=1&type=elabel&barcodeType=Code128';
    
    html = '<div id="dialog_form"><a href="'+link+'" target="_blank" >Generer l\'etiquette KIALA</a></div>';
    /*html.push('<div id="dialog_form" title="Enregistrer l\'envoie d\'un sac"><form action="index.php" method="get">');
    html.push('<label>Saisir la reference du transporteur:</label><input type="text" id="ref_bag" name="bag_ref"/>');
    html.push('<input type="hidden" name="id" value="'+id+'"/><input type="hidden" name="task" value="add_ref"/><br/><button type="submit" > Enregistrer</button>');
    html.push('<input type="hidden" name="option" value="com_cashbag"/><input type="hidden" name="view" value="cashbag"/>');
    html.join('</form></div>');*/
   
    
    return html;
    
}

function showForm(id){
    

    jQuery(formEnreg(id)).dialog({
      autoOpen: false,
      height: 200,
      width: 350,
      modal: true,
      buttons: {
         "OK":function(){
            jQuery(this).dialog( "close" );
            jQuery(this).hide();
         }
      },
       close: function(){
			jQuery(this).dialog( "close" );
			jQuery(this).hide();
		}
      });
    }

function endBackReception(){
   
   jQuery.ajax({
        type:'post',
        url:'index.php?option=com_cashbag&view=products&format=json&task=end_reception&bag_id='+bag_id,
        dataType:'JSON',
        success: function(data){
            var d= data.data;
            if(d === -1) {
			alert('Attention: Vous n\'avez entré aucun produit pour ce CASHBAG');
			return ;
			}
            if(d === 0) {
			alert('Erreur: La tache n\'a pas pu se terminer normalement');
			return ;
			}
            window.location.href = 'index.php?option=com_cashbag&view=products&task=edit_bag&layout=details&bag_id='+bag_id;
            /*eraseFormProduct();
            jQuery("bag_ref_value").prop('disabled',false);
			jQuery("bag_ref_value").val('');
            jQuery("#bag_receiv_valid").prop('disabled',false);*/
            }
    });
}

function checkBagRef(){
   var ref= jQuery("#bag_ref_value").val();
  
   if(ref==="undefined" || ref===""){
       alert("vous devez saisir la reference interne du sac avant de commencer");
   }
   else{
        //send ajax request and check the result! 
        checkBagRefInDB(ref);
   }
}//


function checkBagRefInDB(ref){
    
    jQuery.ajax({
        type:'post',
        url:'index.php?option=com_cashbag&view=products&format=json&task=checkref&bag_ref='+ref,
        dataType:'JSON',
        success: function(data){
            var d=data.data;
            if(d!==''){
                jQuery("#bag_ref_value").prop('disabled',true);
                jQuery("#saisie_produit_next").prop('disabled',false);
                jQuery("#terminer_saisie_bag").prop('disabled',false);
                jQuery("#bag_receiv_valid").prop('disabled',true);
                displayBagOwner(d, ref);
                //turnProdForm(false);
                 
            }
        }
    });
}
function turnProdForm(state){//fait passer les champs de enable à disable vis versa!
    
     jQuery("#add_product_bag input").each(function(){
         jQuery(this).prop("disabled", state);
         
     });
}
function displayBagOwner(data, ref){
   
    var html=[];
    if(data !== -1){
         bag_ref    = ref;
         bag_num    = 1;
        turnProdForm(false);
        jQuery.each(data[0], function(idx,ele){
            if(idx==="id") bag_id=ele;

            html.push('<p>'+idx+': '+ele+'</p>');
        });

        jQuery("#display_bag_owner").html(html.join(''));
    }
    else
        jQuery("#display_bag_owner").html('<p>Aucune entrée trouvée en base de données!</p>');
}


function checkRadio(radioname){
	if (!jQuery('input[name='+radioname+']:checked').val()){
		alert("Vous devez selectionner une ligne");
		return '';
	}
	else{
            var id= jQuery('input[name='+radioname+']:checked').attr('id');
            return id;
	}
}

function validProductForm(){
    var prod = {};
    jQuery("#add_product_bag").find('input').each(function(){
        
         var val=jQuery(this).val();
         if(val==="" || val ==="undefined"){
             return false;
         }
         else{
            prod[jQuery(this).attr('name')] = cleanUpSpecialChars(jQuery(this).val()); ; 
         }
    });
	//for texarea
    jQuery("#add_product_bag").find('textarea').each(function(){
        var val=jQuery(this).val();
         if(val==="" || val ==="undefined"){
            
             return false;
         }
         else{
            prod[jQuery(this).attr('name')]= cleanUpSpecialChars(val.replace(/ /gi,"_"));//encodeURIComponent(jQuery(this).val()); 
         }
    });
    //for select!
    jQuery("#add_product_bag").find(':selected').each(function(idx,ele){
        
        var sel = jQuery(ele).val();
        
        if( sel !== '' && typeof sel !== 'undefined' ){
         prod[jQuery(ele).parent().attr('name')] = cleanUpSpecialChars(sel);	
	}
     else
         return false;
	
    });   
     
    return prod;
}
function saveProdInBD(){
    
    sendProd();
    eraseFormProduct();
}

function sendProd(){
    var prod= validProductForm();
    
    if(prod){
        prod['cashbag_id']      = bag_id;
        prod['product_sku']     = bag_ref+''+bag_num;
        prod['product_name']    = prod['type_produit']+''+jQuery("#marque_produit option:selected").text();
        
        jQuery.ajax({
            type:'post',
            url:'index.php?option=com_cashbag&view=products&format=json&task=saveprod',
            dataType:'JSON',
            data:prod,
            success:function(data){
                if(data !=-1){
                jQuery("#display_nb_prod").html('<h3>Nombre de produits saisis: '+data.data+'</h3>');
                 bag_num++;
                }else{
                    alert('Erreur lors de la création du produit en base de données');
                }
            }
        });
    }
    else{
         alert("Tous les champs sont obligatoires");
    }
}


function eraseFormProduct(){
    
    jQuery("#add_product_bag").find('input').each(function(){
         jQuery(this).val('');
    });
	jQuery("#add_product_bag").find('textarea').each(function(){
         jQuery(this).val('');
    });
    
    //for select!
    jQuery("#add_product_bag").find(':selected').each(function(idx,ele){
    jQuery(this).prop('selectedIndex',0);//val('');
    });
}

function objectSize(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
}

function getPrices_ref(){
    
     jQuery.ajax({
        type:'get',
        url:'index.php?option=com_cashbag&view=products&format=json&task=list_price',
        dataType: 'JSON',
        success: function(d){
       
       manage_price(d);
   
       options_vetement();
       //autocomplete_vetement();
    }
});
}
/*function options_vetement(){
    
    var html= [];
    jQuery.each(allvetements, function(){
       
        html.push('<option>'+this+'</option>');
    });
    vet_selected    = allvetements[0];
    getCoefs(price_coef[vet_selected]);
    jQuery("#input_type_vet").html(html.join(''));
}*/
var allvetements=[], price_coef=[], coef_max=0; coef_min=0, marque_ref=[];

function manage_price(data){
    
    jQuery.each(data, function(idx,ele){
        var i = ele['type'].toUpperCase();
      price_coef[i]= ele['coef_min']+'|'+ele['coef_max'];
      allvetements.push(i);
    });
    
    
}

function options_vetement(){
    
    var html= [];
    html.push('<option></option>');
    jQuery.each(allvetements, function(){
       
        html.push('<option value ="'+this+'">'+this+'</option>');
    });
    
    jQuery("#input_type_vet").html(html.join(''));
}

function calculatePrice(){
    
    var marque      = cleanUpSpecialChars(jQuery("#marque_produit option:selected").text());
    var type_vet    = cleanUpSpecialChars(jQuery("#input_type_vet option:selected").val());
   
    if(typeof type_vet !== '' && type_vet !== '' && typeof marque !== 'undefined' && marque !== ''){
       
        getCoefs(price_coef[type_vet.toUpperCase()]);
        
        var price_ref   = parseFloat(marque_ref[marque.toUpperCase()]);
        var min = price_ref*coef_min;
        var max = price_ref*coef_max;
        
        jQuery("#display_prix").html(min+' à '+max+' Euros');
    }else{
        alert('Vous devez selectionner une marque et un type de produit');
    }
}

function cleanUpSpecialChars(str)
{
    str = str.replace(/[ÀÁÂÃÄÅ]/,"A");
    str = str.replace(/[àáâãäå]/,"a");
    str = str.replace(/[éèêë]/,"e");
    str = str.replace(/[ÈÉÊË]/,"E");
    str = str.replace(/[îï]/,"i");
    str = str.replace(/[ÏÎ]/,"I");
    //.... all the rest
    return str; // final clean up
}

function getCoefs(coefs){
    
    var t= coefs.split("|");
    coef_max    = parseFloat(t[1]);
    coef_min    = parseFloat(t[0]);
}

function manage_marque(data){//associe une marque+un type= prix!
    jQuery.each(data, function(idx,ele){
        var i = ele['marque_produit'];
        i=i.toUpperCase();
      marque_ref[i]= ele['prix_ref'];
    });
}


function getMarques_ref(){//récupère tous les prix des articles!
    
    jQuery.ajax({
        type:'post',
        url:'index.php?option=com_cashbag&view=products&task=list_marque&format=json',
        dataType: 'JSON',
         success: function(d){
        manage_marque(d);
        options_vetement();
        }
    });
}


function manageComments(){
    
    jQuery("#etat_marque").change(function(){
        var val = jQuery(this).find(':selected').val();
        var id  = jQuery("#comments");
        switch(val){
            case'neuf':
                {
                    id.val('Aucun defaut apparent');
                    break;
                }
            case'tres_bon_etat':
            {
                id.val('Peu porte, aucun defaut ou très legères marques d\'usage...');
                break;
            }
            case'bon_etat':
            {
                id.val('Porte quelques fois, quelques defauts d\'usages très peu gênants, type retouches, reprises, legères taches sur doublure, etiquette composition manquante, petits fils tires, petites tâches pas gênante.Article presentant des defauts  peu visibles.');
                break;
            }
            case'etat_correct':
            {
                id.val('Porte frequemment, presentant des defauts du type maille boulochee, couture ou doublure decousue...Article presentant des defauts visibles mais peu gênants.');
                break;
            }
            case'non_achete':
            {
                id.val('');
                id.attr("placeholder", "A ton tour de bosser, ecris un commentaire!");
                break;
            }
            }
    });
}